#ifndef TRANSACTION_H
#define TRANSACTION_H
#include <QSqlDatabase>
#include <QSqlError>
#include "qconnectionpoolmuti.h"


class Transaction
{
public:
    explicit Transaction()
    {
        m_db = pool.ConnectionPool(DB_SQLSERVER)->openConnection(); //用一个sqlserver连接池打开一个连接
        m_db.transaction();
    }

    ~Transaction() {
        if (!m_committed) {
            m_db.rollback();
            pool.GetPool(DB_SQLSERVER)->closeConnection(m_db); //这里不是释放所有的连接，而是释放当前事务的连接
            //DatabasePool::instance().releaseConnection(m_db);
        }
    }

    void commit() {
        m_db.commit();
        m_committed = true;
        pool.GetPool(DB_SQLSERVER)->closeConnection(m_db); //这里不是释放所有的连接，而是释放当前事务的连接
    }

    void rollback()
    {
        m_db.rollback();
        m_committed= false;
        pool.GetPool(DB_SQLSERVER)->closeConnection(m_db) ;
    }

private:
    QSqlDatabase m_db;
    bool m_committed = false;
    QConnectionPoolMuti pool ; //表示多个数据库连接池，有可能是Sqlite或者mysql或者SQLserver，后面的代码要精雕细琢
};

#endif // TRANSACTION_H
